/**
 * @file       gpioconfig.c
 * @author     MatCoreShu (2874567545@qq.com)
 * @date       2025-05-21
 * @version    1.0
 * @copyright  Copyright (c) 2025  [ zhangshuoshi ]
 * @API说明     (API Documentation)
 * ==============================================
    void sysfs_gpio_export(int gpio)
        * @param gpio_num GPIO编号
    void sysfs_gpio_unexport(int gpio)
        * @param gpio_num GPIO编号
    void sysfs_gpio_direction(int gpio, char *gpio_dir)
        * @param gpio_num GPIO编号
        * @param gpio_dir 方向，'in' 、'out'、'high'、'low'
 * ==============================================
 */
#include "gpioconfig.h"

void sysfs_gpio_export(int gpio)
{
    char buf[128];
    memset(&buf, 0, sizeof(buf));
    sprintf(buf, "echo %d > /sys/class/gpio/export", gpio);
    system(buf);
}
void sysfs_gpio_unexport(int gpio)
{

    char buf[128];
    memset(&buf, 0, sizeof(buf));
    sprintf(buf, "echo %d > /sys/class/gpio/unexport", gpio);
    system(buf); 
}
void sysfs_gpio_direction(int gpio, const char *gpio_dir)
{
    char buf[128]; 
    memset(buf, 0, sizeof(buf));
    sprintf(buf, "echo %s > /sys/class/gpio/gpio%d/direction", gpio_dir, gpio);
    system(buf); 
}

void McuBspInit()
{
    //export
    // sysfs_gpio_export(122);
    // sysfs_gpio_export(123);
    //set high
    sysfs_gpio_direction(123,"high");
    sysfs_gpio_direction(122,"low");
}
void LaserBspInit()
{
    //export
    // sysfs_gpio_export(15);
    // sysfs_gpio_export(22);
    //set high
    sysfs_gpio_direction(15,"high");
    sysfs_gpio_direction(22,"low");
}
void McuBspDeinit()
{
    sysfs_gpio_direction(15,"high");
    sysfs_gpio_direction(22,"high");
}
void LaserBspDeinit()
{
    // sysfs_gpio_unexport(15);
    // sysfs_gpio_unexport(22);
}
/*--------refriger-------------*/
void RefrigerInit()
{
    sysfs_gpio_export(139);
}
void RefrigerDeinit()
{
    sysfs_gpio_unexport(139);
}
void Open_Refriger()
{
    sysfs_gpio_direction(139,"high");
}
void Close_Refriger()
{
    sysfs_gpio_direction(139,"low");
}
/*--------shutter-------------*/
void IrShutterInit()
{
    sysfs_gpio_export(141);
}
void IrShutterDeinit()
{
    sysfs_gpio_unexport(141);
}
void Open_IrShutter()
{
    sysfs_gpio_direction(141,"high");
}
void Close_IrShutter()
{
    sysfs_gpio_direction(141,"low");
}
/*--------Fan-------------*/
void FanInit()
{
    sysfs_gpio_export(140);
}
void FanDeinit()
{
    sysfs_gpio_unexport(140);
}
void Open_Fan()
{
    sysfs_gpio_direction(140,"high");
}
void Close_Fan()
{
    sysfs_gpio_direction(140,"low");
}

